logo头像
Snippet 博客主题

Dart 入门基础 基础类型

本文于323天之前发表,文中内容可能已经过时。

dart 语言 https://www.dartlang.org

Dart 入门基础 基础类型

变量 Variables

1
2
3
4
5
 var name = 'Bob';
// dynamic name = 'Bob';
// Object name = 'Bob';

// name = new Object();

常量 Final and const

1
2
3
4
5
6
7
8
9
10
11
12
13
final name = 'Bob'; // Without a type annotation
final String nickname = 'Bobby';



const bar = 1000000; // Unit of pressure (dynes/cm2)
const double atm = 1.01325 * bar; // Standard atmosphere



var foo = const [1];
final bar = const [1,2,3];
const baz = const [5]; // Equivalent to `const []`

Built-in types

  • numbers
  • strings
  • booleans
  • lists (also known as arrays)
  • maps
  • runes (for expressing Unicode characters in a string)
  • symbols

Numbers

  • int
  • double
1
2
3
4
5
int x = 1;
int hex = 0xDEADBEEF;

double y = 1.1;
double exponents = 1.42e5;

数字与布尔值

部分属性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
int figureA = -93;

// figureA是否为负数
print(figureA.isNegative);

// figureA是否是有限的
print(figureA.isFinite);

// figureA是否正无穷大或负无穷大
print(figureA.isInfinite);


double figureB = 64.742;


// 返回figureB的符号,-1.0:值小于0、+1.0:值大于0、-0.0/0.0/NaN:值是其本身
print(figureB.sign);


// 返回figureB运行时的类型
print(figureB.runtimeType);

// 返回figureB的哈希码
print(figureB.hashCode);


int figureC = 13;

// figureC是否为奇数
print(figureC.isOdd);

// figureC是否为偶数
print(figureC.isEven);


// 返回figureC所占存储位
print(figureC.bitLength);

常用方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
int figureA = -93;

// 返回figureA的绝对值
print(figureA.abs());

// 返回figureA的字符串
print(figureA.toString());

double figureB = 64.742;
// 返回figureB的整数值
print(figureB.toInt());

// 返回figureB的双精度值
print(figureB.toDouble());

// 返回大于figureB的双精度值
print(figureB.ceilToDouble());

// 返回小于figureB的双精度值
print(figureB.floorToDouble());

// 返回figureB四舍五入的双精度值
print(figureB.roundToDouble());

// 返回figureB保留几位小数的字符串
print(figureB.toStringAsFixed(2));

// 返回figureB保留几位小数后精确结果的字符串
print(figureB.toStringAsPrecision(3));

int figureC = 31;
// figureC对比其他整数,0:相同、1:大于、-1:小于
print(figureC.compareTo(20));

// 将figureC控制在指定区间的整数
print(figureC.clamp(20, 25));

// 返回figureC转换成指定基数(进制)的字符串
print(figureC.toRadixString(16));

int figureD = 12;
// 返回figureD与其他整数的最大公约数
print(figureD.gcd(18));

// 返回figureDg与其他整数的截取余数
print(figureD.remainder(18));

// 返回figureD几次幂值的字符串
print(figureD.toStringAsExponential(2));

字符串常量与变量

字符串常量

String是一成不变的,一旦定义就不能改变

1
2
3
4
5
6
7
String name = "XiaoMing say : \n";
String say = """
Keep on going ...
never give up ...
never say die ...
""";
print(name + say);

部分属性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
String str = "Hello world!";
// 返回字符串的UTF-16代码单元列表
print(str.codeUnits);
// 返回根据代码单元生成的哈希码
print(str.hashCode);
// 字符串是否为空
print(str.isEmpty);
// 字符串是否不为空
print(str.isNotEmpty);
// 字符串的长度
print(str.length);
// 返回字符串Unicode代码的可迭代对象
print(str.runes);
// 返回对象运行时的类型
print(str.runtimeType);

常用方法

返回对象的字符串表示

1
2
String str = "Hello world!";
print(str.toString());
截取字符串
1
2
3
String str = 'Dart is fun';
String newStr = str.substring(0, 4);
print(newStr);
在字符串中插入字符串
1
2
String name = "XiaoMing";
print("My name is ${name}");
输出字符串的Unicode编码
1
2
3
String str = "Dart";
print(str.codeUnitAt(0));
print(str.codeUnits);
去掉字符串前后空格
1
2
3
4
String str = "\tDart is fun\n";
print(str.trimLeft());
print(str.trimRight());
print(str.trim());
字符串的大小写转换
1
2
3
String str = "ABCdef";
print(str.toLowerCase());
print(str.toUpperCase());
拆分字符串
1
2
3
4
5
String strA = "Hello world!";
print(strA.split(" "));

String strB = "abba";
print(strB.split(new RegExp(r"b*")));
是否包含其他字符串
1
2
3
4
5
String str = 'Dart strings';
print(str.contains('D'));
print(str.contains(new RegExp(r'[A-Z]')));
print(str.contains('D', 0));
print(str.contains(new RegExp(r'[A-Z]'), 0));
在字符串前后补占位符
1
2
3
String str = "86";
print(str.padLeft(4, '0'));
print(str.padRight(4, '0'));
获取指定字符出现的位置
1
2
3
4
5
6
7
String str = 'Dartisans';

print(str.indexOf('art'));
print(str.indexOf(new RegExp(r'[A-Z][a-z]')));

print(str.lastIndexOf('a'));
print(str.lastIndexOf(new RegExp(r'a(r|n)')));
替换字符串中所有匹配字符
1
2
String str = "resume";
print(str.replaceAll(new RegExp(r'e'), 'é'));

字符串变量

StringBuffer是可改变的,定义后还可以再修改

1
2
3
4
StringBuffer xiaomingSaid = new StringBuffer();
xiaomingSaid.write("All the world's a stage ... ");
xiaomingSaid.write("And all the men and women merely players ...");
print(xiaomingSaid);

部分属性

1
2
3
4
5
6
7
8
9
10
11
12
StringBuffer strBuf = new StringBuffer();
strBuf.write("Sow nothing, reap nothing.");
// 返回字符串缓冲区的哈希码
print(strBuf.hashCode);
// 字符串缓冲区是否为空
print(strBuf.isEmpty);
// 字符串缓冲区是否不为空
print(strBuf.isNotEmpty);
// 返回字符串缓冲区累积内容的长度
print(strBuf.length);
// 返回对象运行时的类型
print(runtimeType);

常用方法

1
2
3
4
5
6
7
StringBuffer strBuf = new StringBuffer();
// 添加字符串到字符串缓冲区内
strBuf.write("Do one thing at a time, and do well.");
// 返回字符串缓冲区的所有内容
print(strBuf.toString());
// 清除字符串缓冲区
strBuf.clear();
支付宝打赏 微信打赏

打赏